package com.zijie.demo1;

//---------------------------一个Java文件只写1个类是最好的

//注解：
//1、多态：同一件事件发生在不同对象身上，就会产生不同的结果
//2、条件：向上转型、重写、继承
//3、理论上等号两边的数据类型必须一致，否则赋值会出错！
//4、当发生向上转型后（父类=子类）,此时通过父类的引用只能访问父类自己的成员。不能访问到子类特有的成员。
//直接赋值/函数参数/函数返回值
//

//静态绑定——chongzai?，在编译时我已经知道调用哪个方法了


//重写——又快捷方式
//1、方法名相同
//2、参数列表相同
//3、返回值相同
//检查重写：@Override
//1.private修饰的方法不能重写
//2.static修饰的方法是不能重写的
//3.子类的访问修饰限定权限要大于等于父类的权限
//4.被final修饰的方法是不能被重写的，此时这个方法被称作密封方法
//方法重写-》返回值：构成父子类关系，平等关系

//重写后出现的动态绑定——发生多态的基础
//条件：向上转型、重写、通过父类引用调用这个父类和子类重写的方法
//原因：编译时调用的还是父类的方法，运行时篡改了地址调用子类的重新方法
//多态：当父类引用的对象不一样的时候，表现出的行为是不一样的


//向下转型
//子类=父类//非常不安全——相当于大->小
//而父类=子类//相当于->小->大
//需判断：if(animal instanceof Bird)


//注意：
//当在父类的构造方法当中调用父类子类的重写方法的时候，此时会调用子类的！！!(实际中不建议这样写！！！)
//注意执行顺序：先执行父类的……再执行子类的……
//父类的静态-》子类的静态-》父类实例+构造-》子类实例+构造








//----------------------------------------------------------------------

//可重载
//class Animal{
//    public void eat(int a){
//        System.out.println("haha");
//    }
//}
//class Dog extends Animal {
//    public void eat(String a){
//        System.out.println("666");
//    }
//}
public class Test1 {
    protected void print() {
        System.out.println("haha");
    }
}
